package com.zlj.jdbc.demo;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import org.junit.Test;

public class Demo01 {

	/**
	 * 
	 * @throws ClassNotFoundException
	 * 
	 * 导致 ClassNotFoundException这种异常有以下几种情况：
	 * 1、没有导驱动包;
	 * 2、driverClassName内容写错了;
	 * 
	 * @throws SQLException
	 * 
	 * 导致SQLException这种异常的有以下几种情况：
	 * 1、检查3个参数：url、password、username;
	 * 2、检查mysql服务器是否开启;
	 */
	@Test
	public void test01() throws ClassNotFoundException, SQLException {
		/**
		 * jdbc四大配置参数：
		 * driverClassName:com.mysql.jdbc.Driver
		 * url:jdbc:mysql://localhost:3306/testsql
		 * username:root
		 * password:tiger
		 */
		
		/**
		 *  所有的java.sql.Driver 实现类,都提供了static块,块内的代码就是把自己注册到DriverManager中。
		 * 	Class.forName("com.mysql.jdbc.Driver"); 
		 *   等价于： 
		 *  com.mysql.jdbc.Driver driver = new com.mysql.jdbc.Driver();
		 *  DriverManager.registerDriver(driver); 
		 */
		
		/**
		 * jdbc4.0之后,每个驱动jar包中,在META-INF/services目录下提供了一个名为java.sql.Driver文件。
		 * 文件的内容就是该接口的实现类名称：即com.mysql.jdbc.Driver。
		 */
		
	//	Class.forName("com.mysql.jdbc.Driver");  //加载驱动类(注册驱动)
		
	//	com.mysql.jdbc.Driver driver = new com.mysql.jdbc.Driver();
	//	DriverManager.registerDriver(driver);
		
		String url = "jdbc:mysql://localhost:3306/testsql";
		String password = "tiger";
		String username = "root";
		
		//获取数据库连接
		Connection connection = DriverManager.getConnection(url, username, password);
		System.out.println(connection);
	}
	
	/*
	 * 测试JdbcUtils
	 */
	@Test
	public void test02() throws ClassNotFoundException, IOException, SQLException {
		Connection conn = JdbcUtils.getConnection();
		System.out.println(conn);
		Connection conn2 = JdbcUtils.getConnection();
		System.out.println(conn2);
	}
}
